1. Field of the Invention
The present invention relates to flow control, i.e., regulation of traffic allowed on a portion of a communications network to avoid excessive congestion.
2. State of the Art
One of the characteristic of a real-time data stream, such as a videophone data stream, is that it is isochronous--that time is of the essence. If an error occurs in a video or audio stream, the system cannot afford the time to stop everything and retransmit the lost data packets--this will seriously upset the real-time data flow. A better procedure is to just "plow ahead" and pick up the video (or audio) with the next intact frame received.
A similar situation exists with respect to flow control. Known methods of flow control for non-real-time data streams include "stop and wait" flow control and "sliding window" flow control. In stop and wait flow control, a response to data previously sent must be received before any more data may be sent. Stop and wait flow control therefore assumes that the data flow may be interrupted and resumed at will--clearly not the case with real-time data.
In sliding window flow control, flow credits are exchanged and used up. For example, the receiver might allocate a receive buffer of 1000 bytes and send a "send credit" value of 1000 to the sending side. If the sender then sends 100 bytes to the receiver, it keeps track by setting a "sent" variable to 100. At this point the transmitter could send 1000-100=900 more bytes. As the receiver processes the data and frees up buffer space, it might bump the send credit value to 1000+100=1100 and send this value to the sending side. The sender would now be allowed to send "send credit" minus "sent" bytes to the receiver, namely 100-100=1000. As with stop and wait flow control, sliding window flow control assumes that the data flow may be interrupted and resumed at will. Neither these nor other known methods of flow control arc suitable for real-time data streams.
A variety of other approaches to flow control have been proposed, some of which have been implemented. One such technique is packet discarding--simply discarding excess packets. Another technique, known as isarithmic flow control, limits the total number of packets in the network by using permits that circulate within the network. Whenever a node wants to send a packet, it must first capture a permit and destroy it. The permit is regenerated when the destination node removes the packet from the network. In another approach, which may be referred to as the choke packet approach, nodes detecting congestion send "choke packets" back to the source of any message sent into the congested region. The source is then required to reduce or eliminate this type of traffic. Various flow control techniques are described in Grange, J. L., and Glen, M., eds. Flow Control in Computer Networks. Amsterdam: North Holland Publishing, 1979.
None of the foregoing flow control mechanisms are optimized for flow control of real-time data streams.